/**
 * 安全区域工具函数
 */

/**
 * 获取动态计算的安全区域顶部高度
 */
export function getSafeAreaTop(): number {
  try {
    // 优先从存储中获取
    const storedSafeAreaTop = wx.getStorageSync('safeAreaTop');
    if (storedSafeAreaTop) {
      return storedSafeAreaTop;
    }
    
    // 从全局数据中获取
    const app = getApp<any>();
    if (app && app.globalData && app.globalData.safeAreaTop) {
      return app.globalData.safeAreaTop;
    }
    
    // 默认值
    return 44;
  } catch (error) {
    console.error('获取安全区域高度失败:', error);
    return 44;
  }
}

/**
 * 设置页面的安全区域样式
 */
export function setPageSafeAreaStyle(pageInstance: any): void {
  try {
    const safeAreaTop = getSafeAreaTop();
    
    // 设置页面数据
    pageInstance.setData({
      safeAreaTop: safeAreaTop,
      safeAreaTopStyle: `padding-top: ${safeAreaTop}px;`
    });
    
    console.log('页面安全区域样式已设置:', safeAreaTop);
  } catch (error) {
    console.error('设置页面安全区域样式失败:', error);
  }
}

/**
 * 监听安全区域高度变化
 */
export function watchSafeAreaTop(callback: (safeAreaTop: number) => void): void {
  try {
    // 定期检查安全区域高度是否发生变化
    const checkInterval = setInterval(() => {
      const currentSafeAreaTop = getSafeAreaTop();
      const lastSafeAreaTop = wx.getStorageSync('lastSafeAreaTop');
      
      if (currentSafeAreaTop !== lastSafeAreaTop) {
        wx.setStorageSync('lastSafeAreaTop', currentSafeAreaTop);
        callback(currentSafeAreaTop);
      }
    }, 1000);
    
    // 返回清理函数
    return () => {
      clearInterval(checkInterval);
    };
  } catch (error) {
    console.error('监听安全区域高度失败:', error);
  }
} 